package com.shen.add;

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

public class CyclicBarrierDemo {
    public static void main(String[] args) {

        //召唤七个线程
        CyclicBarrier cyclicBarrier = new CyclicBarrier(7,()->{
            System.out.println("召唤七个线程成功！");
        });

        //开始召唤线程
        for (int i = 0; i < 7; i++) {
            final int temp = i;  //lambda表达式无法直接使用i 需要定义一个final关键字的i，才能拿到i
            new Thread(()->{
                System.out.println(Thread.currentThread().getName()+"开启了第"+temp+"个线程");
                try {
                    cyclicBarrier.await();//开始计数 +1 后面的线程阻塞  如果达不到线程数会一直阻塞
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (BrokenBarrierException e) {
                    e.printStackTrace();
                }
            }).start();
        }
        /**
         * Thread-0开启了第0个线程
         * Thread-1开启了第1个线程
         * Thread-2开启了第2个线程
         * Thread-3开启了第3个线程
         * Thread-4开启了第4个线程
         * Thread-5开启了第5个线程
         * Thread-6开启了第6个线程
         * 召唤七个线程成功！
         */


    }
}
